package com.gofaraway.service.左神算法课.bitmap;


/**
 * 实现一个位图，并实现 增加 删除 查询 元素功能
 */
public class Code01_BitMap {



    static class BitMap{

        public long[] bits;


        /**
         * @param max 初始化位图时，需要指定该位图需要表示的最大数
         */
        public BitMap(int max) {
            // (max >> 6) 等价于 (max / 64)
            bits = new long[(max >> 6) + 1];
        }


        public void add(int num) {
            //先确定 存放在数组的第几位上
            bits[num >> 6] |= (1L << (num & 63));
        }


        public void delete(int num) {
            //先确定 存放在数组的第几位上
            bits[num >> 6] &= ~(1L << (num & 63));
        }


        public boolean contains(int num) {
            return (bits[num >> 6] & (1L << (num & 63))) != 0;
        }
    }
}
